The present invention pertains to methods and apparatuses for correcting for gamut limitations of a color device. More particularly, the present invention relates to methods and apparatuses for creating and using data structures which determine the amounts of colorants that a color output device, such as a color printer, prints or uses in response to requests to print specific colors.
Prior to describing the invention, the following definitions are provided.
Tristimulus Values--Three numbers that describe the visual response to an original color. Two colors with the same tristimulus values look the same if they are viewed under similar conditions. The common coordinates used for tristimulus values are CIEXYZ.
Luminance--That aspect of a colored stimulus relating to its intensity.
Hue--That aspect of a colored stimulus relating to its color name.
Saturation--That aspect of a colored stimulus relating to its purity, or absence of contamination with white.
Gamut--The range of colors producible with a set of inks, lights, or other colorants. The gamut can conveniently be described in terms of a particular volume of a color space.
Chromaticity coordinates--The chromaticity coordinates of a color result from a mapping of its tristimulus values to two coordinates that describe the color without regard to its luminance. In other words, two colors that correspond in chromaticities differ only in luminance.
The increased availability of color monitors in combination with color printers has allowed computer users to view a full color image on a color monitor and then to request a full color printout of that image on a color printer. Users would like the print to look like the display. Unfortunately, the range of colors available from a printer is typically much smaller than the range of colors available from a monitor. In this instance, the color gamut of the monitor is larger than the color gamut of the printer.
Monitors are typically driven by three digital signals, device-dependent RGB, that determine the intensities of light emission of red, green and blue phosphors, respectively. In practice, the RGB signals are commonly quantized to 8 bits for each signal and represent a set of integer values from [0,255]. In this description, we normalize the set of values for a particular signal to be in the range [0,1]. Thus, RGB=(0,0,0) is monitor black and RGB=(1,1,1) is monitor white. Any three component vector with components in the range [0,1] is a possible input signal to the monitor.
The range of possible colors of the monitor may in theory be determined by displaying all of the possible RGB input combinations (under controlled viewing conditions). Different monitors may display different colors even if they are driven with the same input signal. For example, driving monitors from two different manufacturers with the input (0,0,1) will display different colors if the color of the blue phosphors of the two manufacturers differ.
The communication of color information is often done in a color space that is independent of the particular device. The color spaces commonly used, CIEXYZ (XYZ), CIELAB (Lab), CIELUV and colorimetric or calibrated RGB (calorimetric or calibrated RGB refer to color spaces defined analytically in terms of the other spaces, for example CIEXYZ, and they are not to be confused with device RGB) are tied to a color matching experiment by humans under controlled conditions; see, e.g., R. W. G. Hunt, The Reproduction of Colour in Photography, Printing and Television, 5th Edition, Fountain Press, England 1995; and see Brian A. Wandell, Foundations of Vision Science, Sinsauer Associates, Inc., Sunderland, Mass. 1995. Today, spectroradiometers, spectrophotometers and colorimeters are instruments available that can measure these numbers without the use of human subjects. The behavior of the monitor can be described in a device-independent color space by measuring the display colors for a large number of input device RGB values in terms of XYZ color space, or more commonly in CIELAB or CIELUV.
The printers commonly used today are typically addressed with four digital values, CMYK, that determine the amounts of cyan, magenta, yellow and black colorants (inks, pigments or dyes) that are deposited on paper or transparencies. In this description, (0,0,0,0) represents no colorant and (1,1,1,1) represents full colorant amounts. Any vector with components in the range [0,1] represents an acceptable input signal to the printer. The color behavior of the printer may be described in a device-independent color space, by measuring the colorimetric values for a large number of printed combinations of input CMYK values.
Assuming a smooth color response to the input signal for the printer, we can use a vector valued continuous function to represent the color response of the printer, EQU c=.function..sub.p (x), (Eq. 1)
where x=(C, M, Y, K) is a vector in R.sup.4 representing the colorants and c=(A, B, C) is a vector in R.sup.3 representing the device-independent colorimetric response to the colorant. Similarly, for the monitor, EQU d=.function..sub.m (y), (Eq. 2)
where y=(R, G, B) is a vector in R.sup.3 representing the phosphor driving signals and d=(A, B, C) represents the device-independent colorimetric response to the input signals.
For large patches of uniform color on a monitor, the behavior of the monitor is well characterized by the following formula, ##EQU1##
where t is a linearization or "gamma" function that maps [0,1] to [0,1]) and the matrix M with elements m.sub.ij is a 3.times.3 matrix that accounts for the monitor phosphors. The matrix M is determined if one knows the chromaticities of the phosphors (two chromaticity coordinates, derived from XYZ, describe the colors of the phosphors) and the white point of the monitor.
For printers, there are not yet practical formulas describing c=.function..sub.p (x) so the usual representation of .function..sub.p (x) involves a table of values together with an interpolation technique such as quaqrieinear interpolation or simplex interpolation; see, Printer-related color processing techniques. Henry R. Kang. In Color Hard Copy and Graphic Arts IV, San Jose, Calif., USA, Vol. 2413, pp. 410-419, Bellingham, Wash., 1995. Society of Photo-Optical Instrumentation Engineers.
If we could form a function EQU z=g.sub.p (e) (Eq. 4)
where z is a colorant in R.sup.4 and e is a device-independent color description in R.sup.3 we would have a device-independent way to select colors to be printed on our printer. The process of forming g.sub.p given the information in .function..sub.p is referred to as building a separation table for the printer. The term table is used since a common implementation for the evaluation of g.sub.p consists of a table of values for g.sub.p together with an interpolation technique.
If the printer is a CMYK printer, a device-independent color may be printed using any number of combinations of the CMYK values. A common practice is to use smoothness side-conditions that allow an "inversion" of .function..sub.p to build the table g.sub.p.
Now we can form the transformation EQU z=g.sub.p (.function.m(y)) (Eq. 5)
to, in theory, provide a faithful transformation from monitor device-dependent RGB, represented in the equation (Eq. 5) by y to printer colorants CMYK, represented in the equation by z. However, there are many monitor colors, say RGB=(0,0,1) that are out-of-gamut for the printer. This means that no combination of CMYK values gives the same color as the monitor RGB=(0,0,1). The printer still needs to print some values of CMYK. Determining the choice of this CMYK (and similarly, determining the choice of CMYK for all of the other out-of-gamut colors) comprises the gamut mapping problem. The gamut mapping strategy is used at the time the table is built in order to select CMYK outputs for those device-independent values, e, that are out-of-gamut.
To print an image, input values are transformed by interpolation in the multi-dimensional table, regardless of whether the nodes are in-gamut or out-of-gamut. The gamut mapping is implicit in the table constructed.
An example of a gamut mapping strategy is to map along lines of constant hue, defined to be, tan.sup.-1 (b/a) in CIELAB space. A common problem with this approach is that the Lab colors corresponding to monitor blues will map to a color that will appear purple on print, as shown in FIG. 1. This problem occurs because, even though Lab is known as a "uniform" color space, it is not true that a series of colors along a constant Lab hue result in colors of the same name. A set of colors of constant color name would lie on a curve in Lab space, and not on a constant Lab hue line.
Several more elaborate gamut mapping techniques have been developed which perform various warps on the color space in order to take into account the curvature of perceived hue in the color spaces in order to provide better gamut-mapping techniques. For example, the gamut mapping process described in U.S. Pat. No. 5,438,649 attempts to modify the hue angle of values stored in a color separation table after the separation table has been created. Another elaborate gamut mapping technique is described in U.S. Pat. No. 5,539,540. This patent describes the use of different gamut mapping strategies such as one employing a traditional compression technique for a portion of an image to be printed and the use of another color-mapping strategy that works for business graphic images on a different region of the image and then warping the two to preserve continuity and smoothness using a computer morphing technique. These two examples of elaborate gamut-mapping techniques provide certain advantages, but nonetheless are relatively complicated and are complex to control. The warping technique may be computationally burdensome to a digital image processing system.
It is desirable to provide an enhanced gamut-mapping technique which corrects for gamut limitations of an output color device while at the same time imposing fewer computational burdens and also allowing ease of control over the gamut mapping process.